package com.operation.service;

import com.operation.beans.Result;
import com.operation.beans.WorkOrderAllInfo;
import com.operation.entity.*;
import com.operation.utils.ResultUtil;

import java.util.List;

/**
 * Created by LCJ on 2017/10/24.
 */
public interface UserService {

    /**
     * 运维人员，管理员注册
     * @return
     */
    public Result register(UserInfo userInfo);

    /**
     * 添加一个用户
     * @return
     */
    public Result add(UserInfo userInfo);

    /**
     * 查看信息
     * @param userInfo
     * @return
     */
    public Result getUserInfo(UserInfo userInfo);

    /**
     * 修改信息
     * @param userInfo
     * @return
     */
    public int updateUserInfo(UserInfo userInfo);

    /**
     * 删除人员
     * @param userAccount
     * @return
     */
    public Result deleteUserInfo(Long userAccount);

    /**
     * 用户查看追踪工单
     * @param jobNumber
     * @return
     */
    public Result queryWorkOrderStatus(String jobNumber);

    /**
     * 用户评论
     * @param workOrder
     * @return
     */
    public Result review(WorkOrder workOrder);

    /**
     * 用户确认工单完成状况
     * @param workOrder
     * @return
     */
    public Result confirmCompleteWorKOrder(WorkOrder workOrder);

    /**
     * 查看历史工单
     * @param userAccount
     * @return
     */
    public Result findHistoryWorkOrder(Integer userAccount);

    /**
     * 查看用户是否存在
     * @param userAccount
     * @return
     */
    public int isExist(Long userAccount);

    /**
     * 查看在线人员
     * @return
     */
    public Result isOnline();


    /**
     * 设置为在线
     * @param userInfo
     * @return
     */
    public int updateIsOnline(UserInfo userInfo);

    /**
     * 判断是否为运维人员
     * @param userInfo
     * @return
     */
    public UserInfo isIt(UserInfo userInfo);

    /**
     * 判断是否为运维人员
     * @return
     */
    public WorkOrderAllInfo findRepairOrder(Long userAccount);

    /**
     * 投诉
     * @param
     * @return
     */
    public int complaint(String jobNumber);

    /**
     *
     * @param userInfo
     * @return
     */
    public int updateTypeByUserName(UserInfo userInfo);

    /**
     * 根据运维类型获取
     * @param type
     * @return
     */
    public UserInfo findUserByType(Integer type);

    /**
     * 得到用户身份
     * @return
     */
    public UserInfo getUserTye(Long userAccount);

    /**
     * 得到所有的运维人员及管理员
     * @return
     */
    public List<UserInfo> getItPeople();

    /**
     * 删除运维人员及管理员
     * @return
     */
    public int updateItUserType(UserInfo userInfo);

}
